from apps.users.models import User, Permission, RolePermission, Role


permissions = [
    {
        'name': '用户管理',
        'level': 1,
        'path': 'user',
        'icon': 'Avatar',
        'parent': 0,
        'children': [
            {
                'name': '用户列表',
                'level': 2,
                'path': '/user/list',
                'icon': 'User',
                'parent': 1,
            },
            {
                'name': '角色列表',
                'level': 2,
                'path': '/user/role',
                'icon': 'SwitchFilled',
                'parent': 1,
            },
            {
                'name': '权限列表',
                'level': 2,
                'path': '/user/permission',
                'icon': 'Burger',
                'parent': 1,
            }
        ]
    },
    {
        'name': '环境管理',
        'level': 1,
        'path': 'env',
        'icon': 'HelpFilled',
        'parent': 0,
        'children': [
            {
                'name': '环境列表',
                'level': 2,
                'path': '/env/env',
                'icon': 'Share',
                'parent': 1,
            },
            {
                'name': '服务列表',
                'level': 2,
                'path': '/env/service',
                'icon': 'SwitchFilled',
                'parent': 1,
            },
            {
                'name': '平台列表',
                'level': 2,
                'path': '/env/plant',
                'icon': 'Box',
                'parent': 1,
            },
            {
                'name': '模块列表',
                'level': 2,
                'path': '/env/module',
                'icon': 'Memo',
                'parent': 1,
            },
            {
                'name': '页面列表',
                'level': 2,
                'path': '/env/page',
                'icon': 'Document',
                'parent': 1,
            },
            {
                'name': '请求头列表',
                'level': 2,
                'path': '/env/header',
                'icon': 'Coordinate',
                'parent': 1,
            },
            {
                'name': '数据库列表',
                'level': 2,
                'path': '/env/db',
                'icon': 'Setting',
                'parent': 1,
            },
        ]

    },
    {
        'name': '元素管理',
        'level': 1,
        'path': 'element',
        'icon': 'Reading',
        'parent': 0,
        'children': [
            {
                'name': '元素列表',
                'level': 2,
                'path': '/element/list',
                'icon': 'Grape',
                'parent': 1,
            },
        ]
    },
    {
        'name': '接口管理',
        'level': 1,
        'path': 'interface',
        'icon': 'Operation',
        'parent': 0,
        'children': [
            {
                'name': '接口列表',
                'level': 2,
                'path': '/interface/api',
                'icon': 'Link',
                'parent': 1,
            },
        ]
    },
    {
        'name': '脚本管理',
        'level': 1,
        'path': 'script',
        'icon': 'DocumentCopy',
        'parent': 0,
        'children': [
            {
                'name': '脚本列表',
                'level': 2,
                'path': '/python/edit',
                'icon': 'EditPen',
                'parent': 1,
            },
        ]
    },
    {
        'name': '用例管理',
        'level': 1,
        'path': 'case',
        'icon': 'SetUp',
        'parent': 0,
        'children': [
            {
                'name': '用例标签',
                'level': 2,
                'path': '/test/tag',
                'icon': 'CollectionTag',
                'parent': 1,
            },
            {
                'name': '步骤列表',
                'level': 2,
                'path': '/test/step',
                'icon': 'Connection',
                'parent': 1,
            },
            {
                'name': '用例列表',
                'level': 2,
                'path': '/test/case',
                'icon': 'Coin',
                'parent': 1,
            },
        ]
    },
    {
        'name': '套件管理',
        'level': 1,
        'path': 'suite',
        'icon': 'Film',
        'parent': 0,
        'children': [
            {
                'name': '套件列表',
                'level': 2,
                'path': '/suite/list',
                'icon': 'Orange',
                'parent': 1,
            },
            {
                'name': '定时任务',
                'level': 2,
                'path': '/suite/task',
                'icon': 'AlarmClock',
                'parent': 1,
            },
        ]
    },
    {
        'name': '报告管理',
        'level': 1,
        'path': 'report',
        'icon': 'Histogram',
        'parent': 0,
        'children': [
            {
                'name': '报告列表',
                'level': 2,
                'path': '/report/list',
                'icon': 'PieChart',
                'parent': 1
             },
        ]
    },
    {
        'name': 'Bug管理',
        'level': 1,
        'path': 'bug',
        'icon': 'TrendCharts',
        'parent': 0,
        'children': []
    },
]


def create_permissions():
    permission_ids = []
    for permission_data in permissions:
        children = permission_data.pop('children')
        permission_obj = Permission.objects.create(**permission_data)
        permission_ids.append(permission_obj.id)
        for children_permission_data in children:
            children_permission_data['parent'] = permission_obj.id
            permission_children_obj = Permission.objects.create(**children_permission_data)
            permission_ids.append(permission_children_obj.id)
    return permission_ids


def create_role(permissions_ids):
    role_obj = Role.objects.create(name='admin_001')
    for permission_id in permissions_ids:
        RolePermission.objects.create(role_id=role_obj.id, permission_id=permission_id, has_permission=True,
                                      has_read_permission=True, has_delete_permission=True, has_add_permission=True,
                                      has_edit_permission=True)
    return role_obj


def create_super_user():
    permissions_ids = create_permissions()
    role_obj = create_role(permissions_ids)
    User.objects.create_superuser(role_id=role_obj.id, username='admin_001', password='admin_001',
                                  email='admin_001@qq.com')

